# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.AndroidEnterprise.V1.Model.GroupLicense do
  @moduledoc """
   *Deprecated:* New integrations cannot use this method and can refer to our new recommendations 

  ## Attributes

  *   `acquisitionKind` (*type:* `String.t`, *default:* `nil`) - How this group license was acquired. "bulkPurchase" means that this Grouplicenses resource was created because the enterprise purchased licenses for this product; otherwise, the value is "free" (for free products).
  *   `approval` (*type:* `String.t`, *default:* `nil`) - Whether the product to which this group license relates is currently approved by the enterprise. Products are approved when a group license is first created, but this approval may be revoked by an enterprise admin via Google Play. Unapproved products will not be visible to end users in collections, and new entitlements to them should not normally be created.
  *   `numProvisioned` (*type:* `integer()`, *default:* `nil`) - The total number of provisioned licenses for this product. Returned by read operations, but ignored in write operations.
  *   `numPurchased` (*type:* `integer()`, *default:* `nil`) - The number of purchased licenses (possibly in multiple purchases). If this field is omitted, then there is no limit on the number of licenses that can be provisioned (for example, if the acquisition kind is "free").
  *   `permissions` (*type:* `String.t`, *default:* `nil`) - The permission approval status of the product. This field is only set if the product is approved. Possible states are: - "currentApproved", the current set of permissions is approved, but additional permissions will require the administrator to reapprove the product (If the product was approved without specifying the approved permissions setting, then this is the default behavior.), - "needsReapproval", the product has unapproved permissions. No additional product licenses can be assigned until the product is reapproved, - "allCurrentAndFutureApproved", the current permissions are approved and any future permission updates will be automatically approved without administrator review. 
  *   `productId` (*type:* `String.t`, *default:* `nil`) - The ID of the product that the license is for. For example, "app:com.google.android.gm".
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :acquisitionKind => String.t() | nil,
          :approval => String.t() | nil,
          :numProvisioned => integer() | nil,
          :numPurchased => integer() | nil,
          :permissions => String.t() | nil,
          :productId => String.t() | nil
        }

  field(:acquisitionKind)
  field(:approval)
  field(:numProvisioned)
  field(:numPurchased)
  field(:permissions)
  field(:productId)
end

defimpl Poison.Decoder, for: GoogleApi.AndroidEnterprise.V1.Model.GroupLicense do
  def decode(value, options) do
    GoogleApi.AndroidEnterprise.V1.Model.GroupLicense.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.AndroidEnterprise.V1.Model.GroupLicense do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
